package com.message.queue.rabbit.direct;


import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 直接交换机配置信息：只需要生产者加，如果单纯的消费者，可以不加
 * 根据绑定的队列及绑定的路由键分发消息
 * Created by zhangbo on 2020/7/17.
 */
@Configuration
public class DirectRabbitConfig {

    /**
     * 构建队列
     *
     * @return
     */
    @Bean
    public Queue myDirectQueue() {

        /*队列名称，是否持久化，是否只允许创建者使用，是否自动删除*/
//        return new Queue("myDirectQueue",false,false,false);
        return new Queue("myDirectQueue", false);
    }

    /**
     * 构建交换机
     * @return
     */
    @Bean
    public DirectExchange myDirectExchange() {
        /*交换机名称，是否持久化（重启后依然存在），是否自动删除*/
        return new DirectExchange("myDirectExchange", true, false);
    }

    /**
     * 绑定交换机和队列，并配置routingKey
     * @return
     */
    @Bean
    public Binding bindingDirect() {
        return BindingBuilder.bind(myDirectQueue()).to(myDirectExchange()).with("myDirectRouting");
    }


}
